/*
    This file is part of Slydini.

    Slydini is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Slydini is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Slydini.  If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _GESTURE_H
#define _GESTURE_H

#include <string>
#include <vector>

using namespace std;

class Gesture {
	private:
		static Gesture down_right;
		static Gesture down_left;
		static Gesture square;
		static Gesture right_left;
		static Gesture left_right;
		static Gesture circle;
		static Gesture n;
		static Gesture z;
		static Gesture up_down;
		static Gesture down_up;
		static Gesture up_left;
		static Gesture up_right;
		static Gesture up_arrow;
		static Gesture down_arrow;
		static Gesture left_arrow;
		static Gesture right_arrow;
		static Gesture hourglass;
		static Gesture snail;
		static Gesture up_parabola;
		static Gesture down_parabola;
		static Gesture flag;
		static Gesture m;
		static Gesture triangle;
		static Gesture down_right_cross;
		static Gesture down_left_cross;
		static Gesture up_right_cross;


		string name;
		string sequence;

		int minim(int a, int b);
		int getDistance(string second);

	public:
		Gesture(string name, string sequence = "");
		string getName();
		string getSequence();
		static vector<Gesture*> gestures;
		static vector<Gesture*> getGestures();
		static Gesture *getGesture(string name);
		bool operator==(const Gesture &A);

};

#endif
